package kgame5.kgui.gameui.digi {
import flash.display.MovieClip;

/**
 * @author kk
 *   图片数字
 *   注意这个坐标原点是右上角
 *   
 *   mc结构是1234567890,右上角对齐
 */
public class SmartDigi{
	
	public static const 
		ALIGN_LEFT:int=1,
		
		ALIGN_CENTER:int=2,
		ALIGN_RIGHT:int=3;
	
	private var bitCount:int;//位数
	var aMC:Array=new Array();
	
	//bHideZero 是说是否隐藏前面的那些0
	private var bHideZero:Boolean=false;
	private var align:int=0;
	
	
	private var mc_c:MovieClip;
	private var cellWidth:int;
	
	//默认是右对齐
	public function SmartDigi(mc_c:MovieClip,bitCount:int,bHideZero:Boolean=true,align:int=3){
		
		this.mc_c=mc_c;
		this.align=align;
		this.bHideZero=bHideZero;
		this.bitCount=bitCount;
		for(var i:int=0;i<bitCount;i++){
			var mc_d:MovieClip=mc_c.getChildByName("mc_"+i) as MovieClip;
			mc_d.stop();
			aMC.push(mc_d);
			
			cellWidth=mc_d.width;
		}
	}
	
	
	public function update(value:int){
		//T.p("update");
		
		var m:int=0;
		//复原，因为左对齐的时候会更改他偏移
		for(m=0;m<bitCount;m++){
			aMC[m].x=-m*cellWidth;
		}
		
		
		var curValue:int=value;
		var canShow:Boolean=false;
		if(bHideZero==false){//如果连0都显示，则一直都可以显示
			canShow=true;
		}
		
		var jump:int=0;//有优先数字的地方，这个是为了左对齐用的
		for(var i:int=bitCount-1;i>=0;i--){
			var pow:int=Math.pow(10, i);
			//当前位置上的数字
			var kk:int=int(curValue/pow);
			//T.p(i,kk,curValue,pow);
			if(kk!=0){//真实数字之前的0就不要显示了
				if(canShow==false){
					//T.p("jump",i);
					jump=i;
				}
				canShow=true;
			}
			
			//显示
			if(canShow){
				aMC[i].visible=true;	
				if(kk!=0){
					aMC[i].gotoAndStop(kk);
				}else{
					aMC[i].gotoAndStop(10);//10就是0
				}
			}else{
				aMC[i].visible=false;
			}

			curValue-=kk*pow;
		}
//		//如果是左对齐，则执行一下
		var ofsX:int=0;
		switch(align){
			case ALIGN_LEFT:
			ofsX = (this.bitCount-1-jump)*cellWidth;
			break;
			case ALIGN_RIGHT:
			break;
			case ALIGN_CENTER:
			ofsX =(this.bitCount-1-jump)*cellWidth/2;
			break;
		}
		
		//
		for(m=0;m<bitCount;m++){
			aMC[m].x-=ofsX;
		}
	}
}
}

//////////////////////
//	public function SmartDigi(bitCount:int,sLinkName:String="",hspace:int=0,bHideZero:Boolean=true){
//		this.bHideZero=bHideZero;
//		this.bitCount=bitCount;
//		for(var i:int=0;i<bitCount;i++){
//			
//			var mc:MovieClip=Util.AttachMC(sLinkName);
//			
//			mc.x=-i*(mc.width+hspace);
//			
//			aMC.push(mc);
//			
//			addChild(mc);
//			
//		}
//	}